// qrcode/pages/scan-qrcode/index.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    devicePosition: 'back',
    authCamera: false,//用户是否运行授权拍照
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 获取相机授权设置
    wx.getSetting({
      success: (res) => {
        console.log(res);
        if (res.authSetting["scope.camera"]) {
          this.setData({
            authCamera: true,
          })
        }else{
          wx.authorize({
            scope: 'scope.camera',
            success: () =>{
              // 同意授权摄像头
              this.setData({
                authCamera: true,
              })
            },
            fail: (err) => {
              console.log(err);
              this.userAuthFail('scope.camera', '请授权摄像头权限，否则无法扫描').then(authCameraRes => {
                console.log(authCameraRes);
                this.setData({
                  authCamera: authCameraRes,
                })
              }).catch(authCameraErr => {
                console.log(authCameraErr);
                wx.showToast({
                  title: authCameraErr,
                  icon: 'none',
                  duration: 2000,
                  success: () => {
                    setTimeout(() => {
                      wx.navigateBack()
                    }, 2000)
                  }
                })
              })
              // // 不同意授权摄像头
              // this.handleCameraError()
            }
          })
        }
      }
    });
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  // 用户不允许使用摄像头时触发
  handleCameraError:function(e) {
    console.log(e);
    const that = this
    if (e.detail.errMsg == "未找到摄像头") {
      wx.showToast({
        title: '您的设备暂不支持使用摄像头',
        icon: 'none'
      })
      return
    }
    wx.showModal({
      title: '提示',
      showCancel: false,
      content: '请授权摄像头权限，否则无法拍照',
      confirmText: '授权',
      success(res) {
        if (res.confirm) {
          wx.openSetting({
            success: (res) => {
              if (res.authSetting["scope.camera"]) {
                that.setData({
                  authCamera: true
                })
              } else {
                that.setData({
                  authCamera: false
                })
              }
            }
          })
        }
      }
    })
  },

  /**
   * 扫描二维码
   * @param {*} e 
   */
  scanCode(e){
    console.log(e);
    var that = this;
    var result = e.detail.result;
    if(result) {
      wx.redirectTo({
        url: `/pages/source-data/index?search=${result}`,
      })
      // 扫码震动
      wx.vibrateShort({
        type: 'heavy'
      })
      // 播放音乐
      that.playMusic()
    }

  },

  /**
   * 扫码成功的提示音
   */
  playMusic() {
    const innerAudioContext = wx.createInnerAudioContext() /**微信小程序开发文档自带的音频方法 */
    innerAudioContext.autoplay = true /**true是开启自动播放，false则关闭*/
    innerAudioContext.src = '/assets/audio/scan-code.mp3' /**你要播放的音频文件的地址 可以放在线的也可以放本地的，本地的需要用绝对地址 */
    innerAudioContext.onPlay(() => {
      /**开始播放是触发 */
      console.log('Start playback')
    })
    innerAudioContext.onError((res) => {
      /**播放是有错误时触发 */
      console.log(res.errMsg)
      console.log(res.errCode)
    })
  },

   /**
    * 用户拒绝授权
    * @param {string} scope 需授权的权限
    * @param {string} tip 权限对应的提示
    */
   userAuthFail(scope, tip) {
    return new Promise((resolve, reject) => {
      wx.showModal({
        title: '提示',
        content: tip,
        confirmText: '去授权',
        cancelText: '不授权',
        success(res) {
         if (res.confirm) {
           wx.openSetting({
            success: (res) => {
              resolve(res.authSetting[scope])
            }
           })
         }
         if (res.cancel) {
           reject('您拒绝了授权')
         }
        },
      })
    })
  },
})